package class_object;

public class ThisKeywordDemo {
    private String name;
    private int age;

    // 1. this区分成员变量和局部变量
    public ThisKeywordDemo(String name, int age) {
        this.name = name; // this.name指成员变量，name指参数
        this.age = age;
    }

    // 2. this调用本类的其他方法
    public void display() {
        System.out.println("姓名：" + name + "，年龄：" + age);
    }

    public void printInfo() {
        this.display(); // 调用本类的display()方法，this可省略
    }

    // 3. this调用本类的其他构造方法
    public ThisKeywordDemo() {
        this("未知", 0); // 调用有参构造方法
    }

    // 4. this作为方法返回值（链式调用）
    public ThisKeywordDemo setName(String name) {
        this.name = name;
        return this; // 返回当前对象
    }

    public ThisKeywordDemo setAge(int age) {
        this.age = age;
        return this;
    }

    public static void main(String[] args) {
        ThisKeywordDemo obj = new ThisKeywordDemo("张三", 25);
        obj.printInfo();

        // 链式调用
        ThisKeywordDemo obj2 = new ThisKeywordDemo()
                .setName("李四")
                .setAge(30);
        obj2.display();
    }
}
